package com.shuda.business.channel.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.shuda.common.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 渠道实体类
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("t_channel")
public class ChannelEntity extends BaseEntity {

    /**
     * 渠道名称
     */
    private String channelName;

    /**
     * 渠道类型 (upstream: 上游, downstream: 下游)
     */
    private String channelType;

    /**
     * 渠道编码
     */
    private String channelCode;

    /**
     * 渠道描述
     */
    private String description;

    /**
     * 接入方式 (api: API接入, h5: H5页面, miniapp: 小程序)
     */
    private String accessMethod;

    /**
     * 推送方式 (api: API推送, crm: CRM系统)
     */
    private String pushMethod;

    /**
     * 基础URL
     */
    private String baseUrl;

    /**
     * API密钥
     */
    private String apiKey;

    /**
     * API密钥
     */
    private String apiSecret;

    /**
     * 回调URL
     */
    private String callbackUrl;

    /**
     * 请求头配置 (JSON格式)
     */
    private String headers;

    /**
     * 参数映射 (JSON格式)
     */
    private String paramMapping;

    /**
     * 状态 (0: 禁用, 1: 启用)
     */
    private Integer status;

    /**
     * 优先级
     */
    private Integer priority;

    /**
     * 权重
     */
    private Integer weight;

    /**
     * 最大并发数
     */
    private Integer maxConcurrency;

    /**
     * 超时时间 (秒)
     */
    private Integer timeout;

    /**
     * 重试次数
     */
    private Integer retryCount;

    /**
     * 重试间隔 (秒)
     */
    private Integer retryInterval;

    /**
     * 创建人ID
     */
    private Long createdBy;

    /**
     * 更新人ID
     */
    private Long updatedBy;

    /**
     * 获取状态
     * @return 状态 (0禁用,1启用)
     */
    public Integer getStatus() { return status; }

    /**
     * 设置状态
     * @param status 状态 (0禁用,1启用)
     */
    public void setStatus(Integer status) { this.status = status; }

    /**
     * 获取渠道编码
     * @return 渠道编码
     */
    public String getChannelCode() { return channelCode; }

    /**
     * 设置渠道编码
     * @param channelCode 渠道编码
     */
    public void setChannelCode(String channelCode) { this.channelCode = channelCode; }

    /**
     * 获取创建人ID
     * @return 创建人ID
     */
    public Long getCreatedBy() { return createdBy; }

    /**
     * 设置创建人ID
     * @param createdBy 创建人ID
     */
    public void setCreatedBy(Long createdBy) { this.createdBy = createdBy; }

    /**
     * 获取更新人ID
     * @return 更新人ID
     */
    public Long getUpdatedBy() { return updatedBy; }

    /**
     * 设置更新人ID
     * @param updatedBy 更新人ID
     */
    public void setUpdatedBy(Long updatedBy) { this.updatedBy = updatedBy; }
    
    /**
     * 获取渠道名称
     * @return 渠道名称
     */
    public String getChannelName() { return channelName; }

    /**
     * 设置渠道名称
     * @param channelName 渠道名称
     */
    public void setChannelName(String channelName) { this.channelName = channelName; }

    /**
     * 获取渠道类型
     * @return 渠道类型
     */
    public String getChannelType() { return channelType; }

    /**
     * 设置渠道类型
     * @param channelType 渠道类型
     */
    public void setChannelType(String channelType) { this.channelType = channelType; }

    /**
     * 获取渠道描述
     * @return 渠道描述
     */
    public String getDescription() { return description; }

    /**
     * 设置渠道描述
     * @param description 渠道描述
     */
    public void setDescription(String description) { this.description = description; }

    /**
     * 获取接入方式
     * @return 接入方式
     */
    public String getAccessMethod() { return accessMethod; }

    /**
     * 设置接入方式
     * @param accessMethod 接入方式
     */
    public void setAccessMethod(String accessMethod) { this.accessMethod = accessMethod; }

    /**
     * 获取推送方式
     * @return 推送方式
     */
    public String getPushMethod() { return pushMethod; }

    /**
     * 设置推送方式
     * @param pushMethod 推送方式
     */
    public void setPushMethod(String pushMethod) { this.pushMethod = pushMethod; }

    /**
     * 获取基础URL
     * @return 基础URL
     */
    public String getBaseUrl() { return baseUrl; }

    /**
     * 设置基础URL
     * @param baseUrl 基础URL
     */
    public void setBaseUrl(String baseUrl) { this.baseUrl = baseUrl; }

    /**
     * 获取API密钥
     * @return API密钥
     */
    public String getApiKey() { return apiKey; }

    /**
     * 设置API密钥
     * @param apiKey API密钥
     */
    public void setApiKey(String apiKey) { this.apiKey = apiKey; }

    /**
     * 获取API密钥
     * @return API密钥
     */
    public String getApiSecret() { return apiSecret; }

    /**
     * 设置API密钥
     * @param apiSecret API密钥
     */
    public void setApiSecret(String apiSecret) { this.apiSecret = apiSecret; }

    /**
     * 获取回调URL
     * @return 回调URL
     */
    public String getCallbackUrl() { return callbackUrl; }

    /**
     * 设置回调URL
     * @param callbackUrl 回调URL
     */
    public void setCallbackUrl(String callbackUrl) { this.callbackUrl = callbackUrl; }

    /**
     * 获取请求头配置
     * @return 请求头配置JSON
     */
    public String getHeaders() { return headers; }

    /**
     * 设置请求头配置
     * @param headers 请求头配置JSON
     */
    public void setHeaders(String headers) { this.headers = headers; }

    /**
     * 获取参数映射
     * @return 参数映射JSON
     */
    public String getParamMapping() { return paramMapping; }

    /**
     * 设置参数映射
     * @param paramMapping 参数映射JSON
     */
    public void setParamMapping(String paramMapping) { this.paramMapping = paramMapping; }

    /**
     * 获取优先级
     * @return 优先级
     */
    public Integer getPriority() { return priority; }

    /**
     * 设置优先级
     * @param priority 优先级
     */
    public void setPriority(Integer priority) { this.priority = priority; }

    /**
     * 获取权重
     * @return 权重
     */
    public Integer getWeight() { return weight; }

    /**
     * 设置权重
     * @param weight 权重
     */
    public void setWeight(Integer weight) { this.weight = weight; }

    /**
     * 获取最大并发数
     * @return 最大并发数
     */
    public Integer getMaxConcurrency() { return maxConcurrency; }

    /**
     * 设置最大并发数
     * @param maxConcurrency 最大并发数
     */
    public void setMaxConcurrency(Integer maxConcurrency) { this.maxConcurrency = maxConcurrency; }

    /**
     * 获取超时时间
     * @return 超时时间（秒）
     */
    public Integer getTimeout() { return timeout; }

    /**
     * 设置超时时间
     * @param timeout 超时时间（秒）
     */
    public void setTimeout(Integer timeout) { this.timeout = timeout; }

    /**
     * 获取重试次数
     * @return 重试次数
     */
    public Integer getRetryCount() { return retryCount; }

    /**
     * 设置重试次数
     * @param retryCount 重试次数
     */
    public void setRetryCount(Integer retryCount) { this.retryCount = retryCount; }

    /**
     * 获取重试间隔
     * @return 重试间隔（秒）
     */
    public Integer getRetryInterval() { return retryInterval; }

    /**
     * 设置重试间隔
     * @param retryInterval 重试间隔（秒）
     */
    public void setRetryInterval(Integer retryInterval) { this.retryInterval = retryInterval; }
}